크게 두 영역으로 분리됩니다
00009
사용여부, 00017
사용자상태TB_SMP01 | 샘플01 | ||||||||||||||
USER_CD | 사용자코드 | Y | Y | VARCHAR2 | 10 | ||||||||||
USER_ID | 사용자ID | N | N | VARCHAR2 | 18 | ||||||||||
USER_NM | 사용자명 | N | N | VARCHAR2 | 30 | ||||||||||
USER_ENG_NM | 사용자영문명 | N | N | VARCHAR2 | 50 | ||||||||||
USER_PW | 비밀번호 | N | N | VARCHAR2 | 18 | ||||||||||
USER_IMG | 사용자이미지 | N | N | VARCHAR2 | 10 | ||||||||||
USER_BIRTHDAY | 사용자생년월일 | N | N | VARCHAR2 | 8 | ||||||||||
LUNAR_CD | 양력음력구분 | N | N | VARCHAR2 | 5 | ||||||||||
USER_EMAIL | 사용자이메일 | N | N | VARCHAR2 | 100 | ||||||||||
USER_MOBILE | 사용자휴대폰번호 | N | N | VARCHAR2 | 30 | ||||||||||
USER_TEL | 사용자전화번호 | N | N | VARCHAR2 | 30 | ||||||||||
USER_FAX | 사용자FAX | N | N | VARCHAR2 | 30 | ||||||||||
POST_CD | 우편번호 | N | N | VARCHAR2 | 10 | ||||||||||
USER_ADDR1 | 사용자 주소1 | N | N | VARCHAR2 | 150 | ||||||||||
USER_ADDR2 | 사용자 주소2 | N | N | VARCHAR2 | 50 | ||||||||||
DEPT_CD | 부서코드 | N | N | VARCHAR2 | 10 | ||||||||||
USER_POSITION | 사용자직위 | N | N | VARCHAR2 | 5 | ||||||||||
USER_GRADE | 사용자등급 | N | N | VARCHAR2 | 5 | ||||||||||
USER_STATUS | 사용자상태 | N | N | VARCHAR2 | 5 | ||||||||||
DESC_TXT | 상세설명 | N | N | VARCHAR2 | 2000 | ||||||||||
USE_YN | 사용여부 | N | N | VARCHAR2 | 1 | ||||||||||
AGREE_YN | 동의여부 | N | N | VARCHAR2 | 1 | ||||||||||
AGREE_DT | 동의일시 | N | N | DATE | - | ||||||||||
LOGIN_FAIL_CNT | 로그인실패횟수 | N | N | VARCHAR2 | 2 | ||||||||||
LAST_LOGIN_DT | 최종로그인일시 | N | N | DATE | - | ||||||||||
PW_CHANGE_DT | 비밀번호변경일시 | N | N | DATE | - | ||||||||||
INIT_YN | 초기화여부 | N | N | VARCHAR2 | 1 | ||||||||||
LOGIN_DEVICE | 접속기기 | N | N | VARCHAR2 | 50 | ||||||||||
LOGIN_BROWSER | 접속환경 | N | N | VARCHAR2 | 50 | ||||||||||
LOGIN_IP | 접속IP | N | N | VARCHAR2 | 25 | ||||||||||
JOIN_DATE | 입사일 | N | N | VARCHAR2 | 8 | ||||||||||
MAIN_PROJECT | 메인프로젝트 | N | N | VARCHAR2 | 10 | ||||||||||
VALID_YN | 유효여부 | N | N | VARCHAR2 | 1 | ||||||||||
VALID_START_DATE | 유효시작일자 | N | N | VARCHAR2 | 8 | ||||||||||
VALID_END_DATE | 유효종료일자 | N | N | VARCHAR2 | 8 | ||||||||||
REG_DT | 등록일시 | Y | N | DATE | - | ||||||||||
REG_CD | 등록자코드 | N | N | VARCHAR2 | 10 | ||||||||||
MOD_DT | 수정일시 | Y | N | DATE | - | ||||||||||
MOD_CD | 수정자코드 | N | N | VARCHAR2 | 10 |
TB_SMP02 | 샘플02 | ||||||||||||||
DEPT_CD | 부서코드 | Y | Y | VARCHAR2 | 5 | ||||||||||
DEPT_NM | 부서명 | N | N | VARCHAR2 | 50 | ||||||||||
DEPT_ENG_NM | 부서영문명 | N | N | VARCHAR2 | 50 | ||||||||||
ML_CD | 다국어코드 | N | N | VARCHAR2 | 10 | ||||||||||
PARENT_DEPT | 상위부서 | N | N | VARCHAR2 | 5 | ||||||||||
DEPT_LEVEL | 부서LEVEL | N | N | VARCHAR2 | 2 | ||||||||||
DEPT_ORDER | 부서정렬순서 | N | N | VARCHAR2 | 50 | ||||||||||
DESC_TXT | 상세설명 | N | N | VARCHAR2 | 500 | ||||||||||
USE_YN | 사용여부 | N | N | VARCHAR2 | 1 | ||||||||||
REG_DT | 등록일시 | Y | N | DATE | - | ||||||||||
REG_CD | 등록자코드 | N | N | VARCHAR2 | 10 | ||||||||||
MOD_DT | 수정일시 | Y | N | DATE | - | ||||||||||
MOD_CD | 수정자코드 | N | N | VARCHAR2 | 10 |
form
smpForm01
1659
px832
pxCode Snippet 기능을 활용해 기초 코드를 빠르게 완성할 수 있습니다.
영역별로 구분된 기초 코드가 완성되었습니다.
Form_onload
함수를 onload
Event에 할당합니다.
공통코드(00009)를 위한 dsCboUseYn
을 추가합니다.
코드ID
코드명
기타1
기타2
기타3
fnInit
함수를 호출합니다.
/*********************************************************
* 1.2 FORM EVENT 영역(onload등)
********************************************************/
/**
* Form_onload 최초 로드시 발생되는 이벤트 (필수)
*/
this.Form_onload = function(obj:Form, e:nexacro.LoadEventInfo)
{
if (take.formOnLoad(this))
{
//초기화
this.fnInit();
}
};
fnInit
함수는 form이 onload
되거나 MDI탭에 의해 활성화
될 경우 실행됩니다.
/*********************************************************
* 4 사용자 FUNCTION 영역
********************************************************/
/**
* fnInit : 초기화 함수 검색조건 초기화
* @return {N/A} N/A
* @example this.fnInit();
*/
this.fnInit = function()
{
// 공통코드
this.fnCommonCode();
};
take.tranCode
함수를 사용하여 공통코드 조회기능을 구현합니다.
/*********************************************************
* 4 사용자 FUNCTION 영역
********************************************************/
/**
* fnCommonCode : 코드호출 함수
* @param {String} N/A
* @example this.fnCommonCode();
*/
this.fnCommonCode = function ()
{
take.tranCode(
this, // 현재 Form 객체
["00009"], // 코드그룹ID : 시스템 - 코드관리
["dsCboUseYn"], // InDataset (코드그룹ID 개수와 동일해야함)
["SEL"], // 콤보헤더용 (ALL:전체, SEL:선택, "":사용안함)
// (코드그룹ID 개수와 동일해야함)
// Callback 함수 (함수명도 사용 가능 ex:"fnCallback")
function(sId, nErrCd, sErrMsg)
{
// sId : Transaction Id
// nErrCd : Return Code (음수:오류)
// sErrMsg : Return Message
},
true // true:비동기, false:동기 (기본값은 비동기)
);
};
Eclipse의 Tomcat
을 구동시키고 Nexacro Studio의 QuickView
를 실행합니다.
브라우저 빈공간에 ctrl + q
를 입력하면 디버깅 화면이 팝업됩니다.Dataset
- this.dsCboUseYn
- View
로 이동하여 Dataset을 확인할 수 있습니다.
공통코드(00017)을 위한 dsCboStatus
를 추가합니다.
코드ID
코드명
기타1
기타2
기타3
코드그룹ID
, InDataset
을 추가합니다.
/*********************************************************
* 4 사용자 FUNCTION 영역
********************************************************/
/**
* fnCommonCode : 코드호출 함수
* @param {String} N/A
* @example this.fnCommonCode();
*/
this.fnCommonCode = function ()
{
take.tranCode(
this, // 현재 Form 객체
["00009", "00017"], // 코드그룹ID : 시스템 - 코드관리
["dsCboUseYn", "dsCboStatus"], // InDataset (코드그룹ID 개수와 동일해야함)
["SEL", ""], // 콤보헤더용 (ALL:전체, SEL:선택, "":사용안함)
// (코드그룹ID 개수와 동일해야함)
// Callback 함수 (함수명도 사용 가능 ex:"fnCallback")
function(sId, nErrCd, sErrMsg)
{
// sId : Transaction Id
// nErrCd : Return Code (음수:오류)
// sErrMsg : Return Message
},
true // true:비동기, false:동기 (기본값은 비동기)
);
};
Eclipse의 Tomcat
을 구동시키고 Nexacro Studio의 QuickView
를 실행합니다.
브라우저 빈공간에 ctrl + q
를 입력하면 디버깅 화면이 팝업됩니다.Dataset
- this.dsCboStatus
- View
로 이동하여 Dataset을 확인할 수 있습니다.
이전 단계처럼 Dataset을 추가합니다.
공통코드 조회 Callback
에서 take.tranSelect
를 사용한 부서 데이터 조회를 구현합니다.
/*********************************************************
* 4 사용자 FUNCTION 영역
********************************************************/
/**
* fnCommonCode : 코드호출 함수
* @param {String} N/A
* @example this.fnCommonCode();
*/
this.fnCommonCode = function ()
{
// 변수 선언
var objDsCboDept;
objDsCboDept = this.dsCboDept;
// 부서 Dataset 데이터 비우기
objDsCboDept.clearData();
take.tranCode(
... 중략 ....
// Callback 함수 (함수명도 사용 가능 ex:"fnCallback")
function(sId, nErrCd, sErrMsg)
{
// 부서 데이터 조회
take.tranSelect
(
this, // 현재 Form 객체
"deptList", // Transaction Id
"Sample01.smpFormDeptSelect", // sqlMapperId
"", // Indataset(서버로 보낼 Dataset)
"dsCboDept", // Outdataset(서버에서 받을 Dataset)
"", // Parameter
"fnCallback" // Callback 함수명 (함수를 바로 사용 가능)
);
},
true // true:비동기, false:동기 (기본값은 비동기)
);
};
모든 Transaction에 대한 Callback 작업을 fnCallback
에 정의하는것이 기본입니다.take.tranSelect
에서 지정한 Transaction Id
로 구분할 수 있으며 조회 이후 동작을 구현할 수 있습니다.
/*********************************************************
* 5 TRANSACTION OR CALLBACK 콜백 처리부분
********************************************************/
/**
* fnCallback : transaction callback
* @param : sId - 서비스 아이디 (공통 콜백에서 넘어옴)
* @param : nErrCd - 에러코드 (공통 콜백에서 넘어옴)
* @param : sErrMsg - 에러메세지 (공통 콜백에서 넘어옴)
* @return : N/A
* @example :
*/
this.fnCallback = function(sId, nErrCd, sErrMsg)
{
//Transaction 에러는 공통에서 처리
switch(sId)
{
// 부서 검색조건 조회 콜백
case "deptList" :
break;
default :
break;
}
};
TB_SMP01
을 조회 시 사용할 검색조건입니다. Desc | TB_SMP01 | Component Id | Dataset Column | Inner Dataset |
| DEPT_CD | cboDeptCd | deptCd | dsCboDept |
| USER_ID | edtUserId | userId | - |
| USE_YN | cboUseYn | useYn | dsCboUseYn |
div_WF_search_d1
divSearch
id를 임의로 변경 하지 말 것0
0
42
0
1300
divSearch
내부에 Static
을 추가합니다.
staDeptT
id를 임의로 변경 하지 말 것사용자 부서
20
8
70
24
divSearch
내부에 Combo
를 추가합니다.
cboDept
id를 임의로 변경 하지 말 것90
staDeptT와의 공백 : 0px8
180
24
dsCboDept
code
name
기본값 지정을 위해 fnCallback
을 수정합니다.dsCboDept
의 데이터가 존재할 경우 cboDept
의 index
를 0
으로 지정합니다.
/*********************************************************
* 5 TRANSACTION OR CALLBACK 콜백 처리부분
********************************************************/
/**
* fnCallback : transaction callback
* @param : sId - 서비스 아이디 (공통 콜백에서 넘어옴)
* @param : nErrCd - 에러코드 (공통 콜백에서 넘어옴)
* @param : sErrMsg - 에러메세지 (공통 콜백에서 넘어옴)
* @return : N/A
* @example :
*/
this.fnCallback = function(sId, nErrCd, sErrMsg)
{
//Transaction 에러는 공통에서 처리
switch(sId)
{
// 부서 검색조건 조회 콜백
case "deptList" :
// 변수 선언
var objDs, objCboDept;
// 부서 검색조건 Dataset
objDs = this.dsCboDept;
objCboDept = this.divSearch.form.cboDept;
// 부서 검색조건 데이터가 있으면
if (objDs.rowcount > 0)
{
// 부서콤보 첫번째 데이터 세팅
objDs.insertRow(0);
objDs.setColumn(0, "code", "");
objDs.setColumn(0, "name", "전체");
objCboDept.set_index(0);
}
break;
default :
break;
}
};
divSearch
내부에 Static
을 추가합니다.
staUserIdT
id를 임의로 변경 하지 말 것ID
310
8
70
24
divSearch
내부에 Edit
를 추가합니다.
edtUserId
id를 임의로 변경 하지 말 것380
staUserIdT와의 공백 : 0px8
140
24
divSearch
내부에 Static
을 추가합니다.
staUseYnT
id를 임의로 변경 하지 말 것사용여부
560
8
70
24
divSearch
내부에 Combo
를 추가합니다.
cboUseYn
id를 임의로 변경 하지 말 것630
staUseYnT와의 공백 : 0px8
140
24
dsCboUseYn
code
name
기본값 지정을 위해 fnCommonCode를 수정합니다.dsCboUseYn
의 데이터가 존재할 경우 cboUseYn
의 index
를 0
으로 지정합니다.
/*********************************************************
* 4 사용자 FUNCTION 영역
********************************************************/
/**
* fnCommonCode : 코드호출 함수
* @param {String} N/A
* @example this.fnCommonCode();
*/
this.fnCommonCode = function ()
{
// 변수 선언
var objDsCboDept, objCboUseYn, objDsCboUseYn;
objDsCboDept = this.dsCboDept;
objCboUseYn = this.divSearch.form.cboUseYn;
objDsCboUseYn = this.dsCboUseYn;
... 중략 ....
take.tranCode(
... 중략 ....
// Callback 함수 (함수명도 사용 가능 ex:"fnCallback")
function(sId, nErrCd, sErrMsg)
{
// 사용여부 공통코드 데이터가 있는지 여부
if (objDsCboUseYn.rowcount > 0)
{
// 사용여부 검색조건 콤보에 첫번째 값 세팅
objCboUseYn.set_index(0);
}
},
true // true:비동기, false:동기 (기본값은 비동기)
);
};
dsSearch
를 만들고 아래 컬럼들과 1행을 추가해 줍니다.
부서코드 cboDeptCd
의 value
를 Binding 합니다.
dsSearch
deptCd
사용자ID edtUserId
의 value
를 Binding 합니다.
dsSearch
userId
사용여부 cboUseYn
의 value
를 Binding 합니다.
dsSearch
useYn
부서코드 Combo
를 변경할 때 fnSearch
함수를 호출 합니다.
/*********************************************************
* 3 각 COMPONENT 별 EVENT 영역
********************************************************/
this.divSearch_cboDept_onitemchanged = function(obj:nexacro.Combo,e:nexacro.ItemChangeEventInfo)
{
//사용자 목록 조회
this.fnSearch("userList");
};
사용여부 Combo
를 변경할 때 fnSearch
함수를 호출 합니다.
/*********************************************************
* 3 각 COMPONENT 별 EVENT 영역
********************************************************/
this.divSearch_cboUseYn_onitemchanged = function(obj:nexacro.Combo,e:nexacro.ItemChangeEventInfo)
{
//사용자 목록 조회
this.fnSearch("userList");
};
사용자ID Edit
에서 Enter
키 입력될 때 fnSearch
함수를 호출합니다.
/*********************************************************
* 3 각 COMPONENT 별 EVENT 영역
********************************************************/
this.divSearch_edtUserId_onkeydown = function(obj:nexacro.Edit,e:nexacro.KeyEventInfo)
{
//엔터키 다운
if (e.keycode == nexacro.Event.KEY_ENTER)
{
//사용자 목록 조회
this.fnSearch("userList");
}
};
Eclipse
에서 src/main/resources/mappers/sample/Sample01Mapper.xml
를 생성합니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Sample01">
<!-- 쿼리 영역 -->
</mapper>
smpFormDeptSelect
를 쿼리 영역에 작성합니다.
<select id="smpFormDeptSelect" parameterType="map" timeout="0" resultType="takeResultMap" useCache="false">
<![CDATA[
/*
* Sample01.smpFormDeptSelect
* 부서 목록 조회
* @author takeit
* @since 2023.04.24
*/
]]>
SELECT DEPT_CD AS CODE
, DEPT_NM AS NAME
FROM TB_SMP02
WHERE PARENT_DEPT = '0'
ORDER BY DEPT_CD, DEPT_NM
</select>
smpFormSelect
를 쿼리 선언부에 작성합니다.
<select id="smpFormSelect" parameterType="map" timeout="0" resultType="takeResultMap" useCache="false">
<![CDATA[
/*
* Sample01.smpFormSelect
* 샘플 목록 조회
* @author takeit
* @since 2023.04.24
*/
]]>
SELECT USER_CD
, USER_ID
, USER_NM
, USER_BIRTHDAY
, USER_EMAIL
, USER_MOBILE
, USER_TEL
, USER_FAX
, DEPT_CD
, USER_STATUS
, USE_YN
, AGREE_YN
, JOIN_DATE
FROM TB_SMP01
WHERE (CASE WHEN USE_YN IS NULL THEN 'N' ELSE USE_YN END) = #{useYn}
<if test="@kr.co.takeit.util.MybatisUtil@notEmpty( deptCd ) ">
AND DEPT_CD = #{deptCd}
</if>
<if test="@kr.co.takeit.util.MybatisUtil@notEmpty( userId ) ">
AND USER_ID LIKE <include refid="UxbInc.like"><property name="arg1" value="#{userId}"/></include>
</if>
ORDER BY USER_CD
</select>
Eclipse의 Tomcat
을 재시작 합니다.
take.tranSelect
를 사용한 TB_SMP01
데이터 조회를 구현합니다.
/*********************************************************
* 2 필수 FUNCTION 영역
********************************************************/
/**
* fnSearch : 조회 transaction (필수) --> 공통 조회에서 호출할 디폴트값 세팅 필요
* @param {String} sTranId 트랜젝션 아이디
* @return {N/A} N/A
* @example this.fnSearch("ID");
*/
this.fnSearch = function(sTranId)
{
//공통 조회에서 호출할 디폴트값 세팅 필요
if (take.isEmpty(sTranId)) sTranId = "userList";
switch(sTranId) {
case "userList" :
// 변수 선언
var objDivSearch, objDsList;
var sParam;
objDivSearch = this.divSearch.form;
objDsList = this.dsList;
sParam = "";
// Dataset 비우기
objDsList.clearData();
// 조회
take.tranSelect(
this, // 현재 Form 객체
sTranId, // Transaction Id
"Sample01.smpFormSelect", // SQL Mapper Id
"dsSearch", // InDataset(서버로 보낼 Dataset)
"dsList", // OutDataset(서버에서 받을 Dataset)
"", // Parameter
"fnCallback"); // Callback 함수명(함수를 바로 사용 가능)
break;
default:
break;
}
};
switch ~ case
구문에 Transaction Id
가 userList
인 경우를 추가해줍니다.
/*********************************************************
* 5 TRANSACTION OR CALLBACK 콜백 처리부분
********************************************************/
/**
* fnCallback : transaction callback
* @param : sId - 서비스 아이디 (공통 콜백에서 넘어옴)
* @param : nErrCd - 에러코드 (공통 콜백에서 넘어옴)
* @param : sErrMsg - 에러메세지 (공통 콜백에서 넘어옴)
* @return : N/A
* @example :
*/
this.fnCallback = function(sId, nErrCd, sErrMsg)
{
//Transaction 에러는 공통에서 처리
switch(sId)
{
// 부서 검색조건 조회 콜백
case "deptList" :
...중략...
break;
// 조회 콜백
case "userList" :
break;
default :
break;
}
};
TB_SMP01
데이터를 위한 dsList
를 추가합니다.
사용여부
를 사용
으로 선택합니다.ctrl + q
를 입력하여 디버깅 화면을 조회합니다.Dataset
- this.dsList
- view
로 이동하여 Dataset을 확인할 수 있습니다.XML(all)
로 이동하여 Dataset의 ColumnInfo
를 복사합니다.Nexacro Studio
로 돌아와 dsList
의 source
로 이동합니다.ColumnInfo
를 붙여넣어 Dataset 컬럼 정보를 간편하게 등록할 수 있습니다.사용여부 Static
과 Combo
에 필수입력임을 알려주는 CSS를 적용합니다.
sta_color_orange
cmb_WF_essential
takeval.add
함수를 사용하여 사용여부
를 밸리데이션 검증 대상으로 추가합니다.
/*********************************************************
* 4 사용자 FUNCTION 영역
********************************************************/
/**
* fnInit : 초기화 함수 검색조건 초기화
* @return {N/A} N/A
* @example this.fnInit();
*/
this.fnInit = function()
{
// 공통코드
this.fnCommonCode();
// 변수 선언
var objDivForm;
objDivForm = this.divSearch.form;
// 밸리데이션 추가
takeval.add(
this,
"Search", // 밸리데이션 그룹 ID(밸리데이션 대상을 그룹으로 관리)
objDivForm.cboUseYn, // 밸리데이션 대상
objDivForm.staUseYnT.text, // 밸리데이션 명칭
"value", // 밸리데이션 대상 속성(Component:Property, Grid:Cell, Dataset:Column)
true, // Null Check 여부
"string", // Data Type(string, number, date)
"", // Data Length(string:length, number/date:[form,to])
""); // Byte Check 여부(생략가능)
};
takeval.check
함수를 호출하여 밸리데이션을 검증합니다.
/*********************************************************
* 2 필수 FUNCTION 영역
********************************************************/
/**
* fnSearch : 조회 transaction (필수) --> 공통 조회에서 호출할 디폴트값 세팅 필요
* @param {String} sTranId 트랜젝션 아이디
* @return {N/A} N/A
* @example this.fnSearch("ID");
*/
this.fnSearch = function(sTranId)
{
//공통 조회에서 호출할 디폴트값 세팅 필요
if (take.isEmpty(sTranId)) sTranId = "userList";
switch(sTranId) {
case "userList" :
// 밸리데이션 검증
if(!takeval.check(this, "Search")) return;
// 변수 선언
var objDivSearch, objDsList;
var sParam;
...중략...
}
};
사용여부
를 선택하지 않았을 때 밸리데이션 검증을 실패합니다.
그리고 사용자에게 안내 메시지가 출력되며 실패한 Component
로 Focus
가 이동합니다.
divDetail
id를 임의로 변경 하지 말 것0
73
0
0
1300
divDetail
내부에 Static
을 추가합니다.
sta_WF_title02
staDetailTitle
id를 임의로 변경 하지 말 것사용자 목록
true
0
0
21
0
divDetail
내부에 Grid
를 추가합니다.
grdDetail
id를 임의로 변경 하지 말 것col
0
6
~ staDetailTitle
0
0
binddataset
속성을 dsList
로 지정합니다.
binddataset
속성을 지정하게 되면 아래와 같이 Dataset의 컬럼들이 Grid에 추가됩니다.
dsList
의 데이터가 Grid에 출력되는 것을 확인할 수 있습니다.
아직 Grid 헤더와 너비, 높이, 정렬을 수정해야합니다.
또한 코드로 표현되고있는 셀Text를 명칭으로 변환해야합니다.
Head Row의 size
를 32
로 변경합니다.
Body Row의 size
를 30
으로 변경합니다.
userCd
컬럼을 삭제합니다.text
와 size
를 지정합니다. Col | text | Size |
userId | ID | 80 |
userNm | 성명 | 110 |
userBirthday | 생년월일 | 120 |
userEmail | 이메일 | 160 |
userMobile | 모바일 | 110 |
userTel | 유선전화 | 110 |
userFax | 팩스 | 110 |
deptCd | 부서명 | 100 |
userStatus | 상태 | 100 |
useYn | 사용여부 | 100 |
agreeYn | 동의여부 | 80 |
joinDate | 가입일자 | 120 |
combotext
dsCboDept
code
name
combotext
dsCboStatus
code
name
combotext
dsCboUseYn
code
name
date
center
yyyy-MM-dd
코드로 표현되고있던 셀Text가 명칭
으로 변환되었습니다.
더불어 가입일자
도 날짜 형태로 변환되었습니다.
Dateset을 그대로 유지한채 Grid의 셀 출력형태만 변경된 것 입니다.
Grid userproperty
를 추가합니다.
takegrid
select
타이틀 우측으로 전체건수가 표현됩니다.
Grid에 순번
컬럼이 추가됩니다.
나머지 기능은 Grid를 우클릭
하여 사용할 수 있습니다.
form 영역에 버튼을 추가합니다.
btn_WF_searchFold
btnShowHide
id를 임의로 변경 하지 말 것공백
48.76
%-1
~ divSearch
40
16
divDetail
Properties 수정-1
~ btnShowHide